package com.eshop.utils.location;

import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiModel;
import java.io.Serializable;

@ApiModel("腾讯地图返回对象")
public class GetTencentLocationVO implements Serializable
{
    @ApiModelProperty("地址解析结果")
    private ResultBean result;
    @ApiModelProperty("状态说明")
    private String message;
    @ApiModelProperty("状态码，0为正常")
    private Integer status;
    
    public ResultBean getResult() {
        return this.result;
    }
    
    public String getMessage() {
        return this.message;
    }
    
    public Integer getStatus() {
        return this.status;
    }
    
    public void setResult(final ResultBean result) {
        this.result = result;
    }
    
    public void setMessage(final String message) {
        this.message = message;
    }
    
    public void setStatus(final Integer status) {
        this.status = status;
    }
    
    @Override
    public boolean equals(final Object o) {
        if (o == this) {
            return true;
        }
        if (!(o instanceof GetTencentLocationVO)) {
            return false;
        }
        final GetTencentLocationVO other = (GetTencentLocationVO)o;
        if (!other.canEqual(this)) {
            return false;
        }
        final Object this$status = this.getStatus();
        final Object other$status = other.getStatus();
        Label_0065: {
            if (this$status == null) {
                if (other$status == null) {
                    break Label_0065;
                }
            }
            else if (this$status.equals(other$status)) {
                break Label_0065;
            }
            return false;
        }
        final Object this$result = this.getResult();
        final Object other$result = other.getResult();
        Label_0102: {
            if (this$result == null) {
                if (other$result == null) {
                    break Label_0102;
                }
            }
            else if (this$result.equals(other$result)) {
                break Label_0102;
            }
            return false;
        }
        final Object this$message = this.getMessage();
        final Object other$message = other.getMessage();
        if (this$message == null) {
            if (other$message == null) {
                return true;
            }
        }
        else if (this$message.equals(other$message)) {
            return true;
        }
        return false;
    }
    
    protected boolean canEqual(final Object other) {
        return other instanceof GetTencentLocationVO;
    }
    
    @Override
    public int hashCode() {
        final int PRIME = 59;
        int result = 1;
        final Object $status = this.getStatus();
        result = result * 59 + (($status == null) ? 43 : $status.hashCode());
        final Object $result = this.getResult();
        result = result * 59 + (($result == null) ? 43 : $result.hashCode());
        final Object $message = this.getMessage();
        result = result * 59 + (($message == null) ? 43 : $message.hashCode());
        return result;
    }
    
    @Override
    public String toString() {
        return "GetTencentLocationVO(result=" + this.getResult() + ", message=" + this.getMessage() + ", status=" + this.getStatus() + ")";
    }
    
    @ApiModel("地址解析结果")
    public static class ResultBean
    {
        @ApiModelProperty("解析到的坐标")
        private LocationBean location;
        @ApiModelProperty("解析精度级别，分为11个级别，一般>=9即可采用（定位到点，精度较高） 也可根据实际业务需求自行调整")
        private int level;
        @ApiModelProperty("即将下线，由reliability代替")
        private double similarity;
        @ApiModelProperty("行政区划信息")
        private AdInfoBean ad_info;
        @ApiModelProperty("可信度参考")
        private int reliability;
        @ApiModelProperty("即将下线，由level代替")
        private int deviation;
        @ApiModelProperty("区信息")
        private String title;
        @ApiModelProperty("行政区划信息")
        private AddressComponentsBean address_components;
        
        public LocationBean getLocation() {
            return this.location;
        }
        
        public int getLevel() {
            return this.level;
        }
        
        public double getSimilarity() {
            return this.similarity;
        }
        
        public AdInfoBean getAd_info() {
            return this.ad_info;
        }
        
        public int getReliability() {
            return this.reliability;
        }
        
        public int getDeviation() {
            return this.deviation;
        }
        
        public String getTitle() {
            return this.title;
        }
        
        public AddressComponentsBean getAddress_components() {
            return this.address_components;
        }
        
        public void setLocation(final LocationBean location) {
            this.location = location;
        }
        
        public void setLevel(final int level) {
            this.level = level;
        }
        
        public void setSimilarity(final double similarity) {
            this.similarity = similarity;
        }
        
        public void setAd_info(final AdInfoBean ad_info) {
            this.ad_info = ad_info;
        }
        
        public void setReliability(final int reliability) {
            this.reliability = reliability;
        }
        
        public void setDeviation(final int deviation) {
            this.deviation = deviation;
        }
        
        public void setTitle(final String title) {
            this.title = title;
        }
        
        public void setAddress_components(final AddressComponentsBean address_components) {
            this.address_components = address_components;
        }
        
        @Override
        public boolean equals(final Object o) {
            if (o == this) {
                return true;
            }
            if (!(o instanceof ResultBean)) {
                return false;
            }
            final ResultBean other = (ResultBean)o;
            if (!other.canEqual(this)) {
                return false;
            }
            if (this.getLevel() != other.getLevel()) {
                return false;
            }
            if (Double.compare(this.getSimilarity(), other.getSimilarity()) != 0) {
                return false;
            }
            if (this.getReliability() != other.getReliability()) {
                return false;
            }
            if (this.getDeviation() != other.getDeviation()) {
                return false;
            }
            final Object this$location = this.getLocation();
            final Object other$location = other.getLocation();
            Label_0120: {
                if (this$location == null) {
                    if (other$location == null) {
                        break Label_0120;
                    }
                }
                else if (this$location.equals(other$location)) {
                    break Label_0120;
                }
                return false;
            }
            final Object this$ad_info = this.getAd_info();
            final Object other$ad_info = other.getAd_info();
            Label_0157: {
                if (this$ad_info == null) {
                    if (other$ad_info == null) {
                        break Label_0157;
                    }
                }
                else if (this$ad_info.equals(other$ad_info)) {
                    break Label_0157;
                }
                return false;
            }
            final Object this$title = this.getTitle();
            final Object other$title = other.getTitle();
            Label_0194: {
                if (this$title == null) {
                    if (other$title == null) {
                        break Label_0194;
                    }
                }
                else if (this$title.equals(other$title)) {
                    break Label_0194;
                }
                return false;
            }
            final Object this$address_components = this.getAddress_components();
            final Object other$address_components = other.getAddress_components();
            if (this$address_components == null) {
                if (other$address_components == null) {
                    return true;
                }
            }
            else if (this$address_components.equals(other$address_components)) {
                return true;
            }
            return false;
        }
        
        protected boolean canEqual(final Object other) {
            return other instanceof ResultBean;
        }
        
        @Override
        public int hashCode() {
            final int PRIME = 59;
            int result = 1;
            result = result * 59 + this.getLevel();
            final long $similarity = Double.doubleToLongBits(this.getSimilarity());
            result = result * 59 + (int)($similarity >>> 32 ^ $similarity);
            result = result * 59 + this.getReliability();
            result = result * 59 + this.getDeviation();
            final Object $location = this.getLocation();
            result = result * 59 + (($location == null) ? 43 : $location.hashCode());
            final Object $ad_info = this.getAd_info();
            result = result * 59 + (($ad_info == null) ? 43 : $ad_info.hashCode());
            final Object $title = this.getTitle();
            result = result * 59 + (($title == null) ? 43 : $title.hashCode());
            final Object $address_components = this.getAddress_components();
            result = result * 59 + (($address_components == null) ? 43 : $address_components.hashCode());
            return result;
        }
        
        @Override
        public String toString() {
            return "GetTencentLocationVO.ResultBean(location=" + this.getLocation() + ", level=" + this.getLevel() + ", similarity=" + this.getSimilarity() + ", ad_info=" + this.getAd_info() + ", reliability=" + this.getReliability() + ", deviation=" + this.getDeviation() + ", title=" + this.getTitle() + ", address_components=" + this.getAddress_components() + ")";
        }
        
        @ApiModel("行政区划信息")
        public static class AdInfoBean
        {
            @ApiModelProperty("行政区划代码")
            private String adcode;
            
            public String getAdcode() {
                return this.adcode;
            }
            
            public void setAdcode(final String adcode) {
                this.adcode = adcode;
            }
            
            @Override
            public boolean equals(final Object o) {
                if (o == this) {
                    return true;
                }
                if (!(o instanceof AdInfoBean)) {
                    return false;
                }
                final AdInfoBean other = (AdInfoBean)o;
                if (!other.canEqual(this)) {
                    return false;
                }
                final Object this$adcode = this.getAdcode();
                final Object other$adcode = other.getAdcode();
                if (this$adcode == null) {
                    if (other$adcode == null) {
                        return true;
                    }
                }
                else if (this$adcode.equals(other$adcode)) {
                    return true;
                }
                return false;
            }
            
            protected boolean canEqual(final Object other) {
                return other instanceof AdInfoBean;
            }
            
            @Override
            public int hashCode() {
                final int PRIME = 59;
                int result = 1;
                final Object $adcode = this.getAdcode();
                result = result * 59 + (($adcode == null) ? 43 : $adcode.hashCode());
                return result;
            }
            
            @Override
            public String toString() {
                return "GetTencentLocationVO.ResultBean.AdInfoBean(adcode=" + this.getAdcode() + ")";
            }
        }
        
        @ApiModel("解析到的坐标")
        public static class LocationBean
        {
            @ApiModelProperty("经度")
            private double lng;
            @ApiModelProperty("纬度")
            private double lat;
            
            public double getLng() {
                return this.lng;
            }
            
            public double getLat() {
                return this.lat;
            }
            
            public void setLng(final double lng) {
                this.lng = lng;
            }
            
            public void setLat(final double lat) {
                this.lat = lat;
            }
            
            @Override
            public boolean equals(final Object o) {
                if (o == this) {
                    return true;
                }
                if (!(o instanceof LocationBean)) {
                    return false;
                }
                final LocationBean other = (LocationBean)o;
                return other.canEqual(this) && Double.compare(this.getLng(), other.getLng()) == 0 && Double.compare(this.getLat(), other.getLat()) == 0;
            }
            
            protected boolean canEqual(final Object other) {
                return other instanceof LocationBean;
            }
            
            @Override
            public int hashCode() {
                final int PRIME = 59;
                int result = 1;
                final long $lng = Double.doubleToLongBits(this.getLng());
                result = result * 59 + (int)($lng >>> 32 ^ $lng);
                final long $lat = Double.doubleToLongBits(this.getLat());
                result = result * 59 + (int)($lat >>> 32 ^ $lat);
                return result;
            }
            
            @Override
            public String toString() {
                return "GetTencentLocationVO.ResultBean.LocationBean(lng=" + this.getLng() + ", lat=" + this.getLat() + ")";
            }
        }
        
        @ApiModel("解析后的地址部件")
        public static class AddressComponentsBean
        {
            @ApiModelProperty("省")
            private String province;
            @ApiModelProperty("市")
            private String city;
            @ApiModelProperty("街道，可能为空字串")
            private String street;
            @ApiModelProperty("区，可能为空字串")
            private String district;
            @ApiModelProperty("门牌，可能为空字串")
            private String street_number;
            
            public String getProvince() {
                return this.province;
            }
            
            public String getCity() {
                return this.city;
            }
            
            public String getStreet() {
                return this.street;
            }
            
            public String getDistrict() {
                return this.district;
            }
            
            public String getStreet_number() {
                return this.street_number;
            }
            
            public void setProvince(final String province) {
                this.province = province;
            }
            
            public void setCity(final String city) {
                this.city = city;
            }
            
            public void setStreet(final String street) {
                this.street = street;
            }
            
            public void setDistrict(final String district) {
                this.district = district;
            }
            
            public void setStreet_number(final String street_number) {
                this.street_number = street_number;
            }
            
            @Override
            public boolean equals(final Object o) {
                if (o == this) {
                    return true;
                }
                if (!(o instanceof AddressComponentsBean)) {
                    return false;
                }
                final AddressComponentsBean other = (AddressComponentsBean)o;
                if (!other.canEqual(this)) {
                    return false;
                }
                final Object this$province = this.getProvince();
                final Object other$province = other.getProvince();
                Label_0065: {
                    if (this$province == null) {
                        if (other$province == null) {
                            break Label_0065;
                        }
                    }
                    else if (this$province.equals(other$province)) {
                        break Label_0065;
                    }
                    return false;
                }
                final Object this$city = this.getCity();
                final Object other$city = other.getCity();
                Label_0102: {
                    if (this$city == null) {
                        if (other$city == null) {
                            break Label_0102;
                        }
                    }
                    else if (this$city.equals(other$city)) {
                        break Label_0102;
                    }
                    return false;
                }
                final Object this$street = this.getStreet();
                final Object other$street = other.getStreet();
                Label_0139: {
                    if (this$street == null) {
                        if (other$street == null) {
                            break Label_0139;
                        }
                    }
                    else if (this$street.equals(other$street)) {
                        break Label_0139;
                    }
                    return false;
                }
                final Object this$district = this.getDistrict();
                final Object other$district = other.getDistrict();
                Label_0176: {
                    if (this$district == null) {
                        if (other$district == null) {
                            break Label_0176;
                        }
                    }
                    else if (this$district.equals(other$district)) {
                        break Label_0176;
                    }
                    return false;
                }
                final Object this$street_number = this.getStreet_number();
                final Object other$street_number = other.getStreet_number();
                if (this$street_number == null) {
                    if (other$street_number == null) {
                        return true;
                    }
                }
                else if (this$street_number.equals(other$street_number)) {
                    return true;
                }
                return false;
            }
            
            protected boolean canEqual(final Object other) {
                return other instanceof AddressComponentsBean;
            }
            
            @Override
            public int hashCode() {
                final int PRIME = 59;
                int result = 1;
                final Object $province = this.getProvince();
                result = result * 59 + (($province == null) ? 43 : $province.hashCode());
                final Object $city = this.getCity();
                result = result * 59 + (($city == null) ? 43 : $city.hashCode());
                final Object $street = this.getStreet();
                result = result * 59 + (($street == null) ? 43 : $street.hashCode());
                final Object $district = this.getDistrict();
                result = result * 59 + (($district == null) ? 43 : $district.hashCode());
                final Object $street_number = this.getStreet_number();
                result = result * 59 + (($street_number == null) ? 43 : $street_number.hashCode());
                return result;
            }
            
            @Override
            public String toString() {
                return "GetTencentLocationVO.ResultBean.AddressComponentsBean(province=" + this.getProvince() + ", city=" + this.getCity() + ", street=" + this.getStreet() + ", district=" + this.getDistrict() + ", street_number=" + this.getStreet_number() + ")";
            }
        }
    }
}
